Using Graphic UI

Linux의 KDE와 GNOME 모두 X 윈도우 그래픽 위젯을 만들 수 있는 명령을 포함하고 있다.
kdialog: for KDE
zenity: for GNOME(or gdialog)

C 언어에서 GUI를 다루기 위한 라이브러리 GTK+ Qt와 유사
KDE Desktop Evironment
kdialog
kdialog display-options window-options arguments
window options
--checklist title [tag item status]
--error text
--inputbox text [init]
--menu title [tag item]
--msgbox text
--password text
--radiolist title [tag item status]
--separate-output
--sorry text
--textbox file [width] [height]
--title text
--warningyesno text
--warningcontinuecancel text
--warningyesnocancel text
--yesno text
--yesnocancel text
터미널 에뮬레이터 세션 내부가 아닌 별도의 윈도우에 위젯을 출력한다.
kdialog --checklist "Items I need" 1 "Toothbrush" on 2 "Toothpaste" off 3 "Hair brush" on 4 "Deodorant" off 5 "Slippers" off
kdialog는 STDERR가 아닌 STDOUT으로 입력받은 내용을 출력한다.
GNOME Desktop Evironment
- gdialog
- zenity

widget
--calendar
--entry
--error
--file-selection
--info
--list
--notification
--progress
--question
--scale
--text-info
--warning

zenity는 dialog나 kdialog와 달리 위젯 유형의 대부분을 옵션의 매개변수 대신 커맨드라인의 추가 옵션으로 받는다.

kdialog와 동일하게 STDOUT으로 입력받은 값을 출력
menu with zenity
#!/bin/bash
temp=$(mktemp -t temp.XXXXXX)
temp2=$(mktemp -t temp2.XXXXXX)
function diskspace {
df -k > $temp
zenity --text-info --title "Disk Space" --filename=$temp --width 750 --height 10
}
function whoseon {
who > $temp
zenity --text-info --title "Logged in users" --filename=$temp --width 500 --height=10
}
function memusage {
cat /proc/meminfo > $temp
zenity --text-info --title "Memory usage" --filename=$temp --width 300 --height 500
}
while [ 1 ]; do
zenity --list --radiolist --title "Sys Admin Menu" --column "Select" --column "Menu Item" FALSE "Display diskspace" FALSE "Display users" FALSE "Display memory usage" FALSE "Exit" > $temp2
if [ $? -eq 1 ]; then
break
fi
selection=$(cat $temp2)
case $selection in
"Display diskspace")
diskspace;;
"Display users")
whoseon;;
"Display memory usage")
memusage;;
"Exit")
break;;
*)
zenity --info "Sorry, invalid selection"
esac
done